{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
},
"colab": {
"name": "02_RK Mid point Example - Review Question 7b.ipynb",
"provenance": [],
"include_colab_link": true
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QoETHtBnjCiM"
},
"source": [
"## Problem Sheet 3 Question 7b\n",
"\n",
"The general form of the population growth differential equation\n",
"\\begin{equation} y^{'}-y+x=0, \\ \\ (0 \\leq x \\leq 1) \\end{equation}\n",
"with the initial condition\n",
"\\begin{equation}y(0)=0\\end{equation}\n",
"For h=0.2.\n",
"# Midpoint method Solution\n",
"\\begin{equation}\n",
"\\frac{w_{i+1}-w_i}{h}=f(x_i+\\frac{h}{2},w_i+\\frac{h}{2}f(x_i,w_i))\n",
"\\end{equation}\n",
"Rearranging \n",
"\\begin{equation}\n",
"w_{i+1}=w_i+hf(x_i+\\frac{h}{2},w_i+\\frac{h}{2}f(x_i,w_i))\n",
"\\end{equation}\n",
"\\begin{equation}\n",
"w_{i+1}=w_i+h(k_2)\n",
"\\end{equation}\n",
"\\begin{equation}\n",
"k_1=w_i-x_i+2\n",
"\\end{equation}\n",
"\\begin{equation}\n",
"k_2=w_i+\\frac{h}{2}k_1-(x_i+\\frac{h}{2})+2)\n",
"\\end{equation}"
]
},
{
"cell_type": "code",
"metadata": {
"id": "n99haWpQjCiP"
},
"source": [
"import numpy as np\n",
"import math \n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt # side-stepping mpl backend\n",
"import matplotlib.gridspec as gridspec # subplots\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "L538FCiUjCiR"
},
"source": [
"def myfun_xy(x,y):\n",
" return y-x+2\n",
"\n",
"#PLOTS\n",
"def Midpoint_Question2(N,IC):\n",
"\n",
" x_start=0\n",
" INTITIAL_CONDITION=IC\n",
" h=0.2\n",
" N=N+1\n",
" x=np.zeros(N)\n",
" w=np.zeros(N)\n",
" k_mat=np.zeros((2,N))\n",
" k=0\n",
" w[0]=INTITIAL_CONDITION\n",
" x[0]=x_start\n",
" \n",
" for k in range (0,N-1):\n",
" k_mat[0,k]=myfun_xy(x[k],w[k])\n",
" k_mat[1,k]=myfun_xy(x[k]+h/2,w[k]+h/2*k_mat[0,k])\n",
" w[k+1]=w[k]+h*(k_mat[1,k])\n",
" x[k+1]=x[k]+h\n",
"\n",
"\n",
" fig = plt.figure(figsize=(10,4))\n",
" plt.plot(x,w,'-.o',color='blue')\n",
" plt.title('Numerical Solution h=%s'%(h))\n",
"\n",
" # --- title, explanatory text and save\n",
" fig.suptitle(r\"$y'=y-x+2$\", fontsize=20)\n",
" plt.tight_layout()\n",
" plt.subplots_adjust(top=0.85) \n",
" print('x')\n",
" print(x)\n",
" print('k1')\n",
" print(k_mat[0,:])\n",
" print('k2')\n",
" print(k_mat[1,:])\n",
" print('w')\n",
" print(w)"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "tKYx2zjfjCiR",
"outputId": "0879d7a5-a19e-41ae-c11b-a2417db7fc6a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 437
}
},
"source": [
"# Midpoint_Question2(N,IC)\n",
"Midpoint_Question2(5,1)"
],
"execution_count": 3,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"x\n",
"[0. 0.2 0.4 0.6 0.8 1. ]\n",
"k1\n",
"[3. 3.44 3.9768 4.631696 5.43066912 0. ]\n",
"k2\n",
"[3.2 3.684 4.27448 4.9948656 5.87373603 0. ]\n",
"w\n",
"[1. 1.64 2.3768 3.231696 4.23066912 5.40541633]\n"
]
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"collapsed": true,
"id": "9fSe4Z56jCiS"
},
"source": [
""
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"collapsed": true,
"id": "fEDshkBQjCiT"
},
"source": [
""
],
"execution_count": 3,
"outputs": []
}
]
}